import createApp from './app'

export default (context) => {
  // 走到这里来
  return new Promise((resolve, reject)=>{
    let {app, router, store} = createApp()
    router.push(context.url) // 跳转到路由
    // 有可能页面是异步的所以不能直接返回APP
    // 所以等这个钩子 好了 后 再返回回去

    // 需要把当前页面匹配到的组件  找到他的asyncdata 方法让他执行
    router.onReady(()=>{
      // 匹配到的组件  看一下这个组件中有没有这个方法
      let matchesComponents = router.getMatchedComponents();
      console.log('匹配到路由', matchesComponents)
      // 
      Promise.all(matchesComponents.map(component => {
        if(component.asyncData){
          return component.asyncData({store})
        }
      })).then(()=>{
        // 这边自动把数据挂在到window上 __INITIAL_STATE__
        // 客户端还是老值 需要同步更新
        context.state = store.state
        context.meta = app.$meta()
        resolve(app)
      })

      
    })

    // return app
  })

}